package top.dark.queue;

import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.util.Scanner;

/**
 * Author: Darkn
 * description: 阻塞式消费者
 * Create Time: 2021/4/30 23:01
 */
public class JmsConsumer {
    static final Scanner input = new Scanner(System.in);
    private static final String ACTIVEMQ_URL = "tcp://192.168.136.179:61616";
    private static final String ACTIVEMQ_QUEUE01 = "queue01";
    public static void main(String[] args) throws JMSException {
        System.out.println(" ********************消费者1号");
        // 1、获得一个Activemq连接工厂,按照给定的URL，采用默认的用户名密码
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
        // 2、通过连接工厂,获得connection并启动访问
        Connection connection = factory.createConnection();
        connection.start();
        // 3、创建会话session 两个参数 boolean transacted=事务, int acknowledgeMode=确认模式（签收）
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        // 4、创建目的地(具体是队列queue还是主题topic)
        Queue queue = session.createQueue(ACTIVEMQ_QUEUE01);
        // 5、创建消息的消费者，指定消费哪一个队列里面的消息
        MessageConsumer consumer = session.createConsumer(queue);
        // 循环获取
        while (true) {
            // 6、通过消费者调用方法获取队列里面的消息（发送的消息是什么类型，接受的时候就强转成什么类型）
            TextMessage textMessage = (TextMessage) consumer.receive();
            if (textMessage != null) {
                System.out.println("****消费者接收到的消息:  " + textMessage.getText());
            } else {
                break;
            }
        }
        // 7、关闭资源
        consumer.close();
        session.close();
        connection.close();
    }
}
